/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package SocketCliente;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.net.Socket;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Santos
 */
public class JogoView extends javax.swing.JFrame {

    /**
     * Instancia da classe modelo do socket cliente
     */
    private JogoModel model = new JogoModel();
    /**
     * Instancia da classe de controle do socket cliente
     */
    private JogoControl control = new JogoControl();

    /**
     * Creates new form JogoView
     *
     * @throws java.io.IOException
     * @throws java.lang.ClassNotFoundException
     */
    public JogoView() throws IOException, ClassNotFoundException {
        initComponents();
        regraBotao("Iniciar");
        getDataHora();
        textFieldResultado.addKeyListener(enviarResposta);
    }

    public final void getDataHora() {
        java.util.Date dt = new java.util.Date();
        java.text.SimpleDateFormat data = new java.text.SimpleDateFormat("yyyy-MM-dd");
        java.text.SimpleDateFormat hora = new java.text.SimpleDateFormat("HH:mm:ss");
        model.setDataInicio(data.format(dt));
        model.setHoraInicio(hora.format(dt));
    }

    /**
     * Metodo responsável por limpar os RadioButton selecionados pelo o usuário
     */
    private void limparOperadores() {
        radioButtonSomar.setSelected(false);
        radioButtonSubtrair.setSelected(false);
        radioButtonMultiplicar.setSelected(false);
        radioButtonDividir.setSelected(false);
    }

    /**
     * Metodo responsável por definir quais componente ficarão disponíveis para
     * interação com o usuário
     */
    private void regraBotao(String acao) throws IOException, ClassNotFoundException {
        // sempre ficarão desabilitados para interação com o usuário, pois recebem
        // dados do servidor
        textFieldPrimeiroNumero.setEditable(false);
        textFieldSegundoNumero.setEditable(false);

        if (acao.equals("Iniciar")) {
            textFieldPrimeiroNumero.setEditable(false);
            textFieldSegundoNumero.setEditable(false);
            textFieldResultado.setEnabled(false);
            buttonDesistirJogo.setEnabled(false);
            buttonRankingJogadores.setEnabled(false);
            buttonEnviar.setEnabled(false);

        }
        if (acao.equals("Jogar")) {
            CarregarVariavel();
            radioButtonSomar.setEnabled(false);
            radioButtonSubtrair.setEnabled(false);
            radioButtonMultiplicar.setEnabled(false);
            radioButtonDividir.setEnabled(false);
            buttonLimparSelecao.setEnabled(false);
            buttonIniciarJogo.setEnabled(false);
            buttonEnviar.setEnabled(true);
            buttonRankingJogadores.setEnabled(false);
            buttonDesistirJogo.setEnabled(true);
            JOptionPane.showMessageDialog(rootPane, "Vamos Começar o Jogo!!!");
            textFieldResultado.setEnabled(true);
            textFieldResultado.requestFocus();
            control.setOperacaoSelecao(model);
            model.setQuantidadeJogadas(control.getQuantidadeJogadas(model));
        }
        if (acao.equals("PegarNumero")) {
            String numero1 = control.requisitarNumero(model);
            String numero2 = control.requisitarNumero(model);
            model.setOperador(control.requisitarOperador(model));
            if (numero1.equals("")) {
                numero1 = "0";
            }
            textFieldPrimeiroNumero.setText(numero1);
            if (numero2.equals("")) {
                numero2 = "0";
            }
            textFieldSegundoNumero.setText(numero2);
            labelOperador.setText(model.getOperador());
            textFieldResultado.requestFocus();
            textFieldResultado.setText("");
        }
        if (acao.equals("FimJogo")) {
            CarregarVariavel();
            radioButtonSomar.setEnabled(false);
            radioButtonSubtrair.setEnabled(false);
            radioButtonMultiplicar.setEnabled(false);
            radioButtonDividir.setEnabled(false);
            buttonLimparSelecao.setEnabled(false);
            buttonIniciarJogo.setEnabled(false);
            buttonEnviar.setEnabled(false);
            buttonDesistirJogo.setEnabled(false);
            textFieldResultado.setEnabled(false);
            buttonRankingJogadores.setEnabled(true);
            JOptionPane.showMessageDialog(rootPane, "Fim de Jogo!!!\n\n"
                    + "Você obteve: " + model.getQtdCorreta() + " acertos e " + model.getQtdErrada() + " erros.\n\n"
                    + "Confira nosso painel de RANKING e confira a sua posição.\n"
                    + "Obrigado por jogar conosco. Até a próxima.");
            buttonRankingJogadores.requestFocus();
        }
        if (acao.equals("ContinuarJogo")) {
            regraBotao("PegarNumero");

        }
    }

    private void CarregarVariavel() {
        model.setSoma(radioButtonSomar.isSelected() ? "+" : "N");
        model.setSubtracao(radioButtonSubtrair.isSelected() ? "-" : "N");
        model.setMultiplicacao(radioButtonMultiplicar.isSelected() ? "*" : "N");
        model.setDivisao(radioButtonDividir.isSelected() ? "/" : "N");
    }

    /**
     * Metodo responsável por iniciar o jogo e fazer as verificações básicas
     */
    private void Jogar() throws IOException, ClassNotFoundException {
        if (radioButtonSomar.isSelected() || radioButtonSubtrair.isSelected()
                || radioButtonMultiplicar.isSelected() || radioButtonDividir.isSelected()) {
            regraBotao("Jogar");
            regraBotao("PegarNumero");
        } else {
            JOptionPane.showMessageDialog(rootPane, "Nenhum operador foi selecionado!!!");
        }
    }

    /**
     * Metodo responsável por validar a resposta do usuário e totalizar a
     * questões
     *
     * @throws IOException
     * @throws ClassNotFoundException
     */
    private void ValidarResposta() throws IOException, ClassNotFoundException {
        if (textFieldResultado.getText().toString().trim().equals("")) {
            JOptionPane.showMessageDialog(rootPane, "Campo Vázio");
            textFieldResultado.requestFocus();
        } else {
            model.setValor1(Integer.parseInt(textFieldPrimeiroNumero.getText().toString()));
            model.setValor2(Integer.parseInt(textFieldSegundoNumero.getText().toString()));
            model.setResultado(Integer.parseInt(textFieldResultado.getText()));
            if (model.getOperador().equals("+")) {
                if ((model.getValor1() + model.getValor2()) == model.getResultado()) {
                    model.setQtdCorreta(model.getQtdCorreta() + 1);
                } else {
                    model.setQtdErrada(model.getQtdErrada() + 1);
                }
            } else if (model.getOperador().equals("-")) {
                if ((model.getValor1() - model.getValor2()) == model.getResultado()) {
                    model.setQtdCorreta(model.getQtdCorreta() + 1);
                } else {
                    model.setQtdErrada(model.getQtdErrada() + 1);
                }
            } else if (model.getOperador().equals("*")) {
                if ((model.getValor1() * model.getValor2()) == model.getResultado()) {
                    model.setQtdCorreta(model.getQtdCorreta() + 1);
                } else {
                    model.setQtdErrada(model.getQtdErrada() + 1);
                }
            } else if (model.getOperador().equals("/")) {
                if ((model.getValor1() / model.getValor2()) == model.getResultado()) {
                    model.setQtdCorreta(model.getQtdCorreta() + 1);
                } else {
                    model.setQtdErrada(model.getQtdErrada() + 1);
                }
            } else {
                JOptionPane.showMessageDialog(rootPane, "Operador não localizado: " + model.getOperador());
            }

            model.setQtdVezes(model.getQtdVezes() + 1);
            if (model.getQtdVezes() == model.getQuantidadeJogadas()) {
                getFinalizaJogo();
            } else {
                regraBotao("ContinuarJogo");
            }
        }

    }

    /**
     * Chama o processo de finalização do jogo
     *
     * @throws IOException
     * @throws ClassNotFoundException
     */
    private void getFinalizaJogo() throws IOException, ClassNotFoundException {
        //chama a tela de fim de game
        regraBotao("FimJogo");
        control.setEnviaNomeJogador(model);
        control.setEnviaDataInicioJogo(model);
        control.setEnviaHoraInicioJogo(model);
        control.setEnviaQtdCorreta(model);
        control.setEnviaQtdIncorreta(model);
    }

    /**
     * Retornar mensagem de apresentação e instruções do jogo para o usuário
     *
     * @throws IOException
     * @throws ClassNotFoundException
     */
    public void getApresentacao() throws IOException, ClassNotFoundException {
        control.enviarDadosServidor(model, "instrucao");
        control.processaConexaoEntrada(model);
    }

    /**
     * Metodo responsável por reescrever o metodo que escuta o textField de
     * pesquisa
     */
    KeyAdapter enviarResposta = new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {

            switch (e.getKeyCode()) {
                case KeyEvent.VK_ENTER:
                    try {
                        //Botão Enter
                        ValidarResposta();
                    } catch (IOException ex) {
                        Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    break;
            }

        }
    };

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jSeparator1 = new javax.swing.JSeparator();
        jLabel2 = new javax.swing.JLabel();
        radioButtonSomar = new javax.swing.JRadioButton();
        radioButtonMultiplicar = new javax.swing.JRadioButton();
        radioButtonSubtrair = new javax.swing.JRadioButton();
        radioButtonDividir = new javax.swing.JRadioButton();
        jSeparator2 = new javax.swing.JSeparator();
        buttonIniciarJogo = new javax.swing.JButton();
        jSeparator3 = new javax.swing.JSeparator();
        buttonLimparSelecao = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        textFieldPrimeiroNumero = new javax.swing.JTextField();
        labelOperador = new javax.swing.JLabel();
        textFieldSegundoNumero = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        textFieldResultado = new javax.swing.JTextField();
        jSeparator4 = new javax.swing.JSeparator();
        buttonDesistirJogo = new javax.swing.JButton();
        buttonRankingJogadores = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        buttonEnviar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Jogo das operações matemáticas");
        setResizable(false);

        jLabel1.setFont(new java.awt.Font("Tahoma", 3, 18)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Tela de Operação");
        jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);

        jLabel2.setText("Seleção do(s) Tipo(s) de Operação(ões):");

        radioButtonSomar.setText("Soma ( + )");

        radioButtonMultiplicar.setText("Multiplicação ( * )");

        radioButtonSubtrair.setText("Subtração ( - )");

        radioButtonDividir.setText("Divisão ( / )");

        buttonIniciarJogo.setText("Iniciar");
        buttonIniciarJogo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonIniciarJogoActionPerformed(evt);
            }
        });

        buttonLimparSelecao.setText("Limpar");
        buttonLimparSelecao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonLimparSelecaoActionPerformed(evt);
            }
        });

        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel3.setText("Quanto é:");

        textFieldPrimeiroNumero.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

        labelOperador.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        labelOperador.setText("+");

        textFieldSegundoNumero.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel4.setText("=");

        textFieldResultado.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

        buttonDesistirJogo.setText("Desistir");

        buttonRankingJogadores.setText("Ranking");
        buttonRankingJogadores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonRankingJogadoresActionPerformed(evt);
            }
        });

        jLabel5.setText("Resultado");

        buttonEnviar.setText("Enviar");
        buttonEnviar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonEnviarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jSeparator4, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jSeparator3)
                    .addComponent(jSeparator2)
                    .addComponent(jSeparator1)
                    .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(radioButtonMultiplicar)
                            .addComponent(radioButtonSomar))
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(radioButtonDividir)
                            .addComponent(radioButtonSubtrair))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addComponent(buttonLimparSelecao)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(buttonIniciarJogo))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addComponent(buttonRankingJogadores)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(buttonDesistirJogo))))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(textFieldPrimeiroNumero, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(labelOperador)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(textFieldSegundoNumero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel4)
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel5)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(textFieldResultado, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(buttonEnviar)))))
                .addContainerGap())
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {textFieldPrimeiroNumero, textFieldResultado, textFieldSegundoNumero});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(radioButtonSomar)
                            .addComponent(radioButtonSubtrair))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(radioButtonMultiplicar)
                            .addComponent(radioButtonDividir)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(buttonIniciarJogo)
                    .addComponent(buttonLimparSelecao))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel5)
                .addGap(5, 5, 5)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(buttonEnviar, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel3)
                        .addComponent(textFieldPrimeiroNumero, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(labelOperador)
                        .addComponent(textFieldSegundoNumero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel4)
                        .addComponent(textFieldResultado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(buttonDesistirJogo)
                    .addComponent(buttonRankingJogadores))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {textFieldPrimeiroNumero, textFieldResultado, textFieldSegundoNumero});

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void buttonIniciarJogoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonIniciarJogoActionPerformed
        try {
            Jogar();
        } catch (IOException ex) {
            Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_buttonIniciarJogoActionPerformed

    private void buttonLimparSelecaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonLimparSelecaoActionPerformed
        limparOperadores();
    }//GEN-LAST:event_buttonLimparSelecaoActionPerformed

    private void buttonEnviarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEnviarActionPerformed
        try {
            ValidarResposta();
        } catch (IOException ex) {
            Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_buttonEnviarActionPerformed

    private void buttonRankingJogadoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRankingJogadoresActionPerformed
        try {
            List<String> resultado = control.getRankingJogador(model);
            String exibir = "";
            for (int i = 0; i < resultado.size(); i++) {
                exibir = exibir.concat(resultado.get(i).toString()) + "\n";
            }
            JOptionPane.showMessageDialog(rootPane, exibir + "\n\n" + "Thanks o/");
            //control.closeConnection(model);
            dispose();

        } catch (IOException ex) {
            Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(JogoView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_buttonRankingJogadoresActionPerformed

    /**
     * Metodo responsável por inicializar a tela do jogo
     *
     * @param nomeUsuario nome do usuário que irá jogar
     * @param host endereço do servidor
     * @param porta porta de acesso
     * @param socket endereço de memoria com conexão via socket
     */
    public void main(String nomeUsuario, String host, int porta, Socket socket) throws IOException, ClassNotFoundException {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(JogoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(JogoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(JogoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(JogoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*Variaveis básicas para iniciar o jogo a partir da tela de dadosConexao*/
        model.setNomeJogador(nomeUsuario);
        model.setHost(host);
        model.setPorta(porta);
        model.setClienteSocket(socket);
        control.getStreams(model);

    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton buttonDesistirJogo;
    private javax.swing.JButton buttonEnviar;
    private javax.swing.JButton buttonIniciarJogo;
    private javax.swing.JButton buttonLimparSelecao;
    private javax.swing.JButton buttonRankingJogadores;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JSeparator jSeparator3;
    private javax.swing.JSeparator jSeparator4;
    private javax.swing.JLabel labelOperador;
    private javax.swing.JRadioButton radioButtonDividir;
    private javax.swing.JRadioButton radioButtonMultiplicar;
    private javax.swing.JRadioButton radioButtonSomar;
    private javax.swing.JRadioButton radioButtonSubtrair;
    private javax.swing.JTextField textFieldPrimeiroNumero;
    private javax.swing.JTextField textFieldResultado;
    private javax.swing.JTextField textFieldSegundoNumero;
    // End of variables declaration//GEN-END:variables
}
